// 最长上升子序列

#include <bits/stdc++.h>
using namespace std;

int a[1000]; // 原始序列
int F[1000]; // 第i位的最长上升子序列的长度

int main()
{
    int n;
    cin >> n;

    cin >> a[0];
    F[0] = 1;

    for(int i=1; i<n; i++)
    {
        cin >> a[i];

        for(int j=0; j<i; j++)
        {
            if(a[j] < a[i])
            {
                F[i] = max(F[i], F[j]+1);
            }
        }
    }

    int m = 0;
    for(int i=0; i<n; i++)
        m = max(m, F[i]);
    cout << m << endl;

    return 0;
}
